/*
	Copyright (c) 2009, Krzysztof Langner

	This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  
	You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package flexlint;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import flexlint.as.parser.ASGrammar;
import flexlint.as.parser.ParseException;

/**
 * Parses given directory
 * @author klangner
 *
 */
public class DirectoryParser {

	// ----------------------------------------------------------------------------------------------
	/**
	 * Constructor
	 * @param path - path to directory
	 */
	public DirectoryParser(String path){
		folder = path;
	}
	
	// ----------------------------------------------------------------------------------------------
	/**
	 * Start parsing
	 */
	public void parse() throws ParseException {
		
		filesCount = 0;
		parseFolder(folder);
	}
	
	// ----------------------------------------------------------------------------------------------
	public int getParsedFilesCount(){
		return filesCount;
	}
	
	// ----------------------------------------------------------------------------------------------
	private void parseFolder(String path) throws ParseException {
		File 		folder = new File(path);
		File[] 	files = folder.listFiles();
		
		for(int i = 0; i < files.length; i++){
			File file = files[i];
			
			if( !file.getName().startsWith(".") ){
				if(file.isDirectory() && !file.getName().startsWith(".")){
					parseFolder(file.getAbsolutePath());
				}
				else if(file.getName().endsWith(".as")){
					filesCount ++;
					try {
						FileInputStream fis = new FileInputStream(file);
						ASGrammar grammar = new ASGrammar(fis);
						// Look for exceptions
						grammar.parse();
					} catch (IOException e) {
						e.printStackTrace();
					}
					
				}
			}
		}

	}

	// ----------------------------------------------------------------------------------------------
	// Private members
	private String	folder;
	private int 	filesCount;

}
